package org.myh.excel;

import java.sql.Connection;
import java.util.HashMap;
import java.util.List;
import java.util.concurrent.ThreadPoolExecutor;

/**
 * ClassName: ExcelDataCallback
 * Description: 使用build构建需使用的回调类
 * date: 2024/3/26 9:25
 *
 * @author Yu Han
 * @since JDK 1.8
 */
public interface ExcelDataCallback<T> {

    /**
     * 获取数据库连接以及excel的值
     * 使用jdbc的钩子
     * @param connection
     * @param data
     */
    default void getConnectAndExcelData(Connection connection , HashMap<Integer, List<T>> data){};

    /**
     * 获取数据库连接以及excel的值
     * 不使用jdbc的钩子（使用者自己使用mybatis或其他orm框架去实现）
     * @param data
     */
    default void getConnectAndExcelData(HashMap<Integer, List<T>> data){}

    /**
     * 前置数据处理
     * @param index
     * @param t
     * @param hasNext
     * @param total
     */
    default void preExcelDataHandle(int index, T t,int total,boolean hasNext){}

    /**
     * 后置数据处理
     * @param threadPoolExecutor
     */
    default void postExcelDataHandle(ThreadPoolExecutor threadPoolExecutor){

    }
}
